package com.engine.jucailinkq.attendance.attendanceanalysis.service;

import com.engine.jucailinkq.attendance.attendanceanalysis.dto.clockpoint.ClockPointDTO;

import java.util.List;
import java.util.Map;

/**
 * 工具service
 */
public interface UtilService {
    /**
     *  获得人员班次信息,加班计划
     * @param params
     * @return
     */
    Map<String, Object> getSchedulingInFormation(Map<String,Object> params);

    Map<String, List<Map<String, Object>>> getScheduleInfoWithEmpId(List<String> empIdList, String startDate, String endDate);

    String getRqlxInScheduleInfo(String empId,String date);

    /**
     * 获得指定天数的打卡时间集合
     * 只支持一次工作时间段跨天，不支持多端工作时间段跨天。
     * @param params
     * @return
     */
    List<Map<String,Object>> getClockInTime(Map<String,Object> params);

    /**
     * 记录考勤项目
     * @param params
     */
    void recordItem(Map<String,Object> params);

    /**
     * 记录进出时间
     * @param clcokInTimeData
     * @return
     */
    Map<String,Object> getNeedRecordClockInTime(List<ClockPointDTO> clcokInTimeData);
    /**
     * 获得打卡卡点以及匹配的打卡时间
     */
    List<ClockPointDTO> getClockInPointCmd(Map<String,Object> params);

    /**
     * 计算出勤时长
     */
    double computeAttendanceDuration(Map<String,Object> params);

    /**
     * 根据人员集合获得对应需要分析的日期
     * @param params
     * @return
     */
    Map<String, Object> getAttendanceCycle(Map<String,Object> params);
}
